package yecq_blockqueue;

import java.util.concurrent.BlockingQueue;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Producer extends Thread {
    // BlockingQueue是Java高并发编程的生产者消费者模型专门做的类,<String>用做泛型类，规定里面的值为String类型，例如用泛型可以实现传入参数最终变为<>所规定的类型
    private final BlockingQueue<String> buffer;

    // 接收传来的操作
    public Producer(String name, BlockingQueue<String> buffer) {
        super(name);
        this.buffer = buffer;
    }

    @Override
    public void run() {
        while (true) {
            try {

                //休息数为一个随机产生的值
                sleep(1000 * Util.getRandomNumber(6));

                // 获得一个20以内的随机值
                int number = Util.getRandomNumber(20);

                // 将所取得的值放入队列中
                this.buffer.put(number + "");

                // 打印线程实现的操作
                System.out.println(this.getName() + " 放入 " + number);

                // try-catch 例行操作
            } catch (InterruptedException ex) {
                Logger.getLogger(Producer.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}
